<?php

abstract class Dispatcher
{
	
	/**
	* Le dispatcher qui va lancer l'action en fonction des param�tres
	*/
	public static function dispatch ( )
	{
		
		$options = Route::recognizeURL ( ( ! empty ( $_GET['url'] ) ) ? $_GET['url'] : 'default' ) ;
		if ( empty ( $options['controller'] ) || empty ( $options['action'] ) )
		{
			throw new Exception ( 'Impossible de trouver une route pour cette URL' ) ;
		}
		
		// On s'interesse maintenant aux paramètres en eux mêmes (POST et GET)
		$params = array_merge ( $options, $_GET, $_POST ) ;
		
		// On enlève notre url que l'on a déjà traitée
		unset ( $params['url'] ) ;
		
		// On insert notre controller
		if ( file_exists ( './app/controller/' . $params['controller'] . 'Controller.php' ) )
		{
			require_once './app/controller/' . $params['controller'] . 'Controller.php' ;
		}
		else
		{
			throw new Exception ( 'Controleur ' . $params['controller'] . ' introuvable' ) ;
		}
		
		$controller = $params['controller'] . 'Controller' ;
		if ( ! class_exists ( $controller ) )
		{
			throw new Exception ( 'Controller introuvable' ) ;
		}
		
		$oController = new $controller ;
		$oController->setParams ( $params ) ;
		$oController->runAction ( $params['action'] ) ;
		
	}
	
}